package com.neusoft.crm.service;

import com.neusoft.crm.po.ClientInfo;
import com.neusoft.crm.po.ClientServer;
import com.neusoft.crm.po.DataServerType;
import com.neusoft.crm.po.SysUser;

import java.util.List;

/**
 * 客户服务请求接口
 *
 * @author msprc
 */
public interface IClientServerService {

    /**
     * 查询服务请求列表
     *
     * @param clientServer 信息载体
     * @return 服务请求列表
     */
    List<ClientServer> selectClientServerListByState(ClientServer clientServer);

    /**
     * 新建服务请求
     *
     * @param clientServer 服务请求信息
     * @return 受影响的行数
     */
    int createClientServer(ClientServer clientServer);

    /**
     * 删除服务请求
     *
     * @param clientServer 服务请求信息
     * @return 受影响的行数
     */
    int deleteClientServer(ClientServer clientServer);

    /**
     * 指派服务请求
     *
     * @param clientServer 服务请求信息
     * @return 受影响的行数
     */
    int assignClientServer(ClientServer clientServer);

    /**
     * 处理服务请求
     *
     * @param clientServer 服务请求信息
     * @return 受影响的行数
     */
    int dealClientServer(ClientServer clientServer);

    /**
     * 反馈服务请求
     *
     * @param clientServer 服务请求信息
     * @return 受影响的行数
     */
    int feedbackClientServer(ClientServer clientServer);

    /**
     * 查询所有服务类型，填充下拉框
     *
     * @return 受影响的行数
     */
    List<DataServerType> getAllClientServerTypeName();

    /**
     * 查询所有正常客户姓名，填充下拉框
     *
     * @return 受影响的行数
     */
    List<ClientInfo> getAllClientName();

    /**
     * 查询所有经理，填充下拉框
     *
     * @return 受影响的行数
     */
    List<SysUser> getAllSysName();

    /**
     * 模糊查询，根据客户名称，服务类型，创建人
     *
     * @param clientServer 服务请求信息
     * @return 符合要求的服务请求列表
     */
    List<ClientServer> selectClientServerByTag(ClientServer clientServer);


}
